package com.ksyun.campus.metaserver.service;

import com.ksyun.campus.metaserver.common.result.BaseResult;
import com.ksyun.campus.metaserver.entity.dto.req.WriteReqDto;
import com.ksyun.campus.metaserver.entity.meta.StatInfo;

/**
 * 同步元数据服务业务层
 */
public interface SyncMetaService {
    /**
     * 创建文件
     *
     * @param fileSystemName 命名空间
     * @param path           文件路径
     * @return 文件元数据
     */
    BaseResult<StatInfo> createFile(String fileSystemName, String path, StatInfo statInfo);

    /**
     * 文件写完了 更新元数据
     *
     * @param writeReqDto 写文件请求实体
     */
    BaseResult<String> commitWrite(String fileSystemName, WriteReqDto writeReqDto);


    /**
     * 根据path创建空文件夹
     *
     * @param fileSystemName 命名空间
     * @param path           文件路径
     * @return 文件元数据
     */
    BaseResult<StatInfo> mkdir(String fileSystemName, String path, StatInfo statInfo);

    /**
     * 删除文件
     *
     * @param fileSystemName 命名空间
     * @param path           文件夹路径
     */
    BaseResult<StatInfo> delete(String fileSystemName, String path);

    /**
     * 删除文件异常恢复
     * @param fileSystemName 命名空间
     * @param statInfo       文件元数据
     */
    BaseResult<String> deleteErrorRecovery(String fileSystemName, StatInfo statInfo);

}
